using System;
using System.Collections.Generic;
using FikriKibar.Entities.Abstract;


namespace FikriKibar.Entities.Concrete
{
    
    public class User : IEntity{
        public int Id { get; set; }
        public string Username { get; set; }
        public string Password { get; set; }
        public string ConfirmPassword { get; set; }
        public string OldPassword { get; set; }
        public string Email { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string FullName => FirstName + " " + LastName;
        public int LanguageId { get; set; }
        public DateTime CreateDate { get; set; }
        public int CreatedBy { get; set; }
        public DateTime UpdateDate { get; set; }
        public int UpdatedBy { get; set; }
        public int DisplayOrder { get; set; }
        public bool IsApproved { get; set; }
        public virtual ICollection<Content> Contents_CreatedBy { get; set; }
        public virtual ICollection<Content> Contents_UpdatedBy { get; set; }
        public virtual ICollection<ContentCategory> ContentCategories_CreatedBy { get; set; }
        public virtual ICollection<ContentCategory> ContentCategories_UpdatedBy { get; set; }
        public virtual ICollection<ContentCategoryLanguageLine> ContentCategoryLanguageLines_CreatedBy { get; set; }
        public virtual ICollection<ContentCategoryLanguageLine> ContentCategoryLanguageLines_UpdatedBy { get; set; }
        public virtual ICollection<ContentLanguageLine> ContentLanguageLines_CreatedBy { get; set; }
        public virtual ICollection<ContentLanguageLine> ContentLanguageLines_UpdatedBy { get; set; }
        public virtual ICollection<ContentType> ContentTypes_CreatedBy { get; set; }
        public virtual ICollection<ContentType> ContentTypes_UpdatedBy { get; set; }
        public virtual ICollection<ContentTypeLanguageLine> ContentTypeLanguageLines_CreatedBy { get; set; }
        public virtual ICollection<ContentTypeLanguageLine> ContentTypeLanguageLines_UpdatedBy { get; set; }
        public virtual ICollection<File> Files_CreatedBy { get; set; }
        public virtual ICollection<File> Files_UpdatedBy { get; set; }
        public virtual ICollection<Keyword> Keywords_CreatedBy { get; set; }
        public virtual ICollection<Keyword> Keywords_UpdatedBy { get; set; }
        public virtual ICollection<KeywordLanguageLine> KeywordLanguageLines_CreatedBy { get; set; }
        public virtual ICollection<KeywordLanguageLine> KeywordLanguageLines_UpdatedBy { get; set; }
        public virtual ICollection<Menu> Menus_CreatedBy { get; set; }
        public virtual ICollection<Menu> Menus_UpdatedBy { get; set; }
        public virtual ICollection<MenuItem> MenuItems_CreatedBy { get; set; }
        public virtual ICollection<MenuItem> MenuItems_UpdatedBy { get; set; }
        public virtual ICollection<MenuItemLanguageLine> MenuItemLanguageLines_CreatedBy { get; set; }
        public virtual ICollection<MenuItemLanguageLine> MenuItemLanguageLines_UpdatedBy { get; set; }
        public virtual ICollection<MenuLanguageLine> MenuLanguageLines_CreatedBy { get; set; }
        public virtual ICollection<MenuLanguageLine> MenuLanguageLines_UpdatedBy { get; set; }
        public virtual ICollection<Role> Roles_CreatedBy { get; set; }
        public virtual ICollection<Role> Roles_UpdatedBy { get; set; }
        public virtual ICollection<RoleLanguageLine> RoleLanguageLines_CreatedBy { get; set; }
        public virtual ICollection<RoleLanguageLine> RoleLanguageLines_UpdatedBy { get; set; }
        public virtual ICollection<Session> Sessions { get; set; }
        public virtual ICollection<SessionHistory> SessionHistories { get; set; }
        public virtual ICollection<Setting> Settings_CreatedBy { get; set; }
        public virtual ICollection<Setting> Settings_UpdatedBy { get; set; }
        public virtual ICollection<SettingLanguageLine> SettingLanguageLines_CreatedBy { get; set; }
        public virtual ICollection<SettingLanguageLine> SettingLanguageLines_UpdatedBy { get; set; }
        public virtual ICollection<User> Users_CreatedBy { get; set; }
        public virtual ICollection<User> Users_UpdatedBy { get; set; }
        public virtual ICollection<UserGroup> UserGroups_CreatedBy { get; set; }
        public virtual ICollection<UserGroup> UserGroups_UpdatedBy { get; set; }
        public virtual ICollection<UserGroupLanguageLine> UserGroupLanguageLines_CreatedBy { get; set; }
        public virtual ICollection<UserGroupLanguageLine> UserGroupLanguageLines_UpdatedBy { get; set; }
        public virtual ICollection<UserGroupRoleLine> UserGroupRoleLines_CreatedBy { get; set; }
        public virtual ICollection<UserGroupRoleLine> UserGroupRoleLines_UpdatedBy { get; set; }

        public virtual ICollection<UserGroupUserLine> UserGroupUserLines_CreatedBy { get; set; }
        public virtual ICollection<UserGroupUserLine> UserGroupUserLines_UpdatedBy { get; set; }
        public virtual ICollection<UserGroupUserLine> UserGroupUserLines_User { get; set; }

        public virtual Language Language { get; set; }
        public virtual User User_CreatedBy { get; set; }
        public virtual User User_UpdatedBy { get; set; }

        public User()
        {
            Contents_CreatedBy = new List<Content>();
            Contents_UpdatedBy = new List<Content>();
            ContentCategories_CreatedBy = new List<ContentCategory>();
            ContentCategories_UpdatedBy = new List<ContentCategory>();
            ContentCategoryLanguageLines_CreatedBy = new List<ContentCategoryLanguageLine>();
            ContentCategoryLanguageLines_UpdatedBy = new List<ContentCategoryLanguageLine>();
            ContentLanguageLines_CreatedBy = new List<ContentLanguageLine>();
            ContentLanguageLines_UpdatedBy = new List<ContentLanguageLine>();
            ContentTypes_CreatedBy = new List<ContentType>();
            ContentTypes_UpdatedBy = new List<ContentType>();
            ContentTypeLanguageLines_CreatedBy = new List<ContentTypeLanguageLine>();
            ContentTypeLanguageLines_UpdatedBy = new List<ContentTypeLanguageLine>();
            Files_CreatedBy = new List<File>();
            Files_UpdatedBy = new List<File>();
            Keywords_CreatedBy = new List<Keyword>();
            Keywords_UpdatedBy = new List<Keyword>();
            KeywordLanguageLines_CreatedBy = new List<KeywordLanguageLine>();
            KeywordLanguageLines_UpdatedBy = new List<KeywordLanguageLine>();
            Menus_CreatedBy = new List<Menu>();
            Menus_UpdatedBy = new List<Menu>();
            MenuItems_CreatedBy = new List<MenuItem>();
            MenuItems_UpdatedBy = new List<MenuItem>();
            MenuItemLanguageLines_CreatedBy = new List<MenuItemLanguageLine>();
            MenuItemLanguageLines_UpdatedBy = new List<MenuItemLanguageLine>();
            MenuLanguageLines_CreatedBy = new List<MenuLanguageLine>();
            MenuLanguageLines_UpdatedBy = new List<MenuLanguageLine>();
            Roles_CreatedBy = new List<Role>();
            Roles_UpdatedBy = new List<Role>();
            RoleLanguageLines_CreatedBy = new List<RoleLanguageLine>();
            RoleLanguageLines_UpdatedBy = new List<RoleLanguageLine>();
            Sessions = new List<Session>();
            SessionHistories = new List<SessionHistory>();
            Settings_CreatedBy = new List<Setting>();
            Settings_UpdatedBy = new List<Setting>();
            SettingLanguageLines_CreatedBy = new List<SettingLanguageLine>();
            SettingLanguageLines_UpdatedBy = new List<SettingLanguageLine>();
            Users_CreatedBy = new List<User>();
            Users_UpdatedBy = new List<User>();
            UserGroups_CreatedBy = new List<UserGroup>();
            UserGroups_UpdatedBy = new List<UserGroup>();
            UserGroupLanguageLines_CreatedBy = new List<UserGroupLanguageLine>();
            UserGroupLanguageLines_UpdatedBy = new List<UserGroupLanguageLine>();
            UserGroupRoleLines_CreatedBy = new List<UserGroupRoleLine>();
            UserGroupRoleLines_UpdatedBy = new List<UserGroupRoleLine>();
            UserGroupUserLines_CreatedBy = new List<UserGroupUserLine>();
            UserGroupUserLines_UpdatedBy = new List<UserGroupUserLine>();
            UserGroupUserLines_User = new List<UserGroupUserLine>();
        }
    }

}
